﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>标签定义规范</title>
    <script type="text/javascript" src="/Scripts/jquery-1.4.1.min.js"></script>
    <style type="text/css">
        *
        {
            font-family: Courier New;
            font-size: 15px;
            line-height: 25px;
        }
        h1.title
        {
            font-size: 23px;
            font-weight: bolder;
            color: Red;
        }
        h1.title2
        {
            font-size: 18px;
            font-weight: bolder;
            color: Red;
        }
        h1.title3
        {
            margin-left:25px;
            font-size: 15px;
            color: Red;
        }
        div.space0
        {
            width: 30px;
            float: left;
            color: Blue;
        }
        div.space1
        {
            width: 60px;
            float: left;
            color: Blue;
        }
        div.space2
        {
            width: 90px;
            float: left;
            color: Blue;
        }
        div.space3
        {
            width: 120px;
            float: left;
            color: Blue;
        }
        div.space4
        {
            width: 150px;
            float: left;
            color: Blue;
        }
        div.code
        {
            color: #a00;
            background-color: #ccc;
        }
        div.hidecode
        {
            display: none;
        }
    </style>
    <script type="text/javascript">
        function togglearea(o) {
            if ($(o).text() == '展开') {
                var l = $(o).parent();
                var c = $(l).children('div');
                $(o).parent().children('div').eq(1).show(1000, function () { $(o).text('影藏') });
            }
            else {
                $(o).parent().children('div').eq(1).hide(1000, function () { $(o).text('展开') });
            }
        }
    </script>
</head>
<body>
    <a href="index.htm">&lt;&lt;返回</a>
    <h1 class="title">
        标签定义规范</h1>
    empires样例一：
    <div class="code">
        <a href="javascript:;" onclick="togglearea(this)">展开</a><br />
        <div class="space0">
            1.</div>
        &lt;empires name="noticelist"&gt;<br />
        <div class="hidecode">
            <div class="space1">
                2.</div>
            &lt;text&gt;&lt;ul&gt;&lt;/text&gt;<br />
            <div class="space2">
                3.</div>
            &lt;fill mode="repeat" item="3"&gt;<br />
            <div class="space3">
                4.</div>
            &lt;li&gt;&lt;img src="images/p1.gif" /&gt;[{:DATE}] {:Title}&lt;/li&gt;<br />
            <div class="space3">
                5.</div>
            &lt;li&gt;&lt;img src="images/p1.gif" /&gt;[{:DATE/i:0}] {:Title/i:0}&lt;/li&gt;<br />
            <div class="space2">
                6.</div>
            &lt;/fill&gt;<br />
            <div class="space2">
                7.</div>
            &lt;ignore&gt;<br />
            <div class="space3">
                8.</div>
            &lt;li&gt;&lt;img src="images/p1.gif" /&gt;[2010-9-10] 今日公告消息在这里显示&lt;where option="{:GROUP}>=3"&gt;&lt;a href="javascript:;"&gt;删除&lt;/a&gt;&lt;/where&gt;&lt;/li&gt;<br />
            <div class="space3">
                9.</div>
            &lt;li&gt;&lt;img src="images/p1.gif" /&gt;[2010-9-10] 今日公告消息在这里显示&lt;/li&gt;<br />
            <div class="space3">
                10.</div>
            &lt;li&gt;&lt;img src="images/p1.gif" /&gt;[2010-9-10] 今日公告消息在这里显示&lt;/li&gt;<br />
            <div class="space3">
                11.</div>
            &lt;li&gt;&lt;img src="images/p1.gif" /&gt;[2010-9-10] 今日公告消息在这里显示&lt;/li&gt;<br />
            <div class="space2">
                12.</div>
            &lt;/ignore&gt;<br />
            <div class="space1">
                13.</div>
            &lt;text&gt;&lt;/ul&gt;&lt;/text&gt;<br />
            <div class="space0">
                14.</div>
            &lt;/empires&gt;<br />
        </div>
    </div>
    <br />
    empires样例二：
    <div class="code">
        <a href="javascript:;" onclick="togglearea(this)">展开</a><br />
        <div class="space0">
            1.</div>
        &lt;empires name="aboutus"&gt;<br />
        <div class="hidecode">
            <div class="space1">
                2.</div>
            &lt;fill mode="text"&gt;<br />
            <div class="space2">
                3.</div>
            &lt;div&gt;&lt;img src="{:URL}" /&gt;{:CONTENT}&lt;/div&gt;<br />
            <div class="space2">
                4.</div>
            &lt;div&gt;......&lt;/div&gt;<br />
            <div class="space1">
                5.</div>
            &lt;/fill&gt;<br />
            <div class="space1">
                6.</div>
            &lt;ignore&gt;<br />
            <div class="space2">
                7.</div>
            显示是一张图片&lt;img src="" style="width:50px;height:50px"/&gt;这里显示关于我们的文本<br />
            <div class="space1">
                8.</div>
            &lt;/ignore&gt;<br />
            <div class="space0">
                6.</div>
            &lt;/empires&gt;<br />
        </div>
    </div>
    <div>
        <p style="text-indent: 30px;">
            如以上样例，所有需要数据填充的地方需被empires标签所囊括，empires有一个name属性，该属性限定了获取数据的方式（reflection.config进行配置，详见<a
                href="#configsample">配置样例</a>）， empires子元素中需要填充字段的地方被fill元素所囊括(一个empires标签内只能存在一个fill元素)，fill元素有一个mode属性(详见<a
                    href="#modeContract">mode约定</a>)，该属性描述填充模式。如样例一，填充模式为repeat，则表示被fill囊括的元素需要被重复输出，该节点还配置了item属性值为3，
            该属性表示重复输出3次。item属性是缺省的，默认情况为数据返回多少条记录则重复多少次，如果item值大于数据条数，则取小的。被fill标签囊括的元素是需要被重复的部分，其中需要被数据填充的地方按照{:AttrName}的形式标记，
            该标记可以配置输出返回数据记录的第一几条数据，如{:DATE/i:0}表示第0条记录。如果该值大于数据条数，则该值被默认为未限定的模式，未限定模式为当前重复第几次所以就为几（详见<a href="#filed">字段填充策略</a>）。AttrName必须为<a
                href="#attrContract">约定值</a>之一。 被ignore标签所囊括的部分将被忽略掉，不会被输出成html文本。
        </p>
        <p style="text-indent: 30px;">
            如样例二，mode被配置为text，表示输出的为文本，fill标签内数据不会被重复，只会按照约定填充数据，然后输出html文本，按照惯例， 被ignore标签所囊括的部分任然将被忽略掉（fill元素内部可以包含ignore标签）。
        </p>
    </div>
    <div>
        <h1 class="title2">
            系统预定义
        </h1>
        <div class="code">
        <a href="javascript:;" onclick="togglearea(this)">展开</a><br />
        <div class="space0">
            1.</div>
        &lt;empires name="system"&gt;<br />
        <div class="hidecode">
            <div class="space1">
                2.</div>
            &lt;method name="GetDateTimeWithLongDate" /&gt;<br />
            <div class="space0">
                6.</div>
            &lt;/empires&gt;<br />
        </div>
    </div>
    </div>
    <div id="configsample">
        <h1 class="title2">
            配置样例</h1>
        <div class="code">
            <a href="javascript:;" onclick="togglearea(this)">展开</a><br />
            <div class="space0">1.</div>&lt;assemblybinding&gt;<br />
              <div class="hidecode">
                <div class="space1">2.</div>&lt;noticelist&gt;<br />
                <div class="space2">3.</div>&lt;methodInfo&gt;<br />
                    <div class="space3">4.</div>&lt;assembly&gt;Empires.PL.ServiceClient.NoticeSerivceClient&lt;/assembly&gt;<br />
                    <div class="space3">5.</div>&lt;method&gt;GetNoticeList&lt;/method&gt;<br />
                    <div class="space3">6.</div>&lt;descript&gt;返回最新公告信息&lt;/descript&gt;<br />
                <div class="space2">7.</div>&lt;/methodInfo&gt;<br />
                <div class="space2">8.</div>&lt;parameters&gt;<br />
                    <div class="space3">9.</div>&lt;add type="System.Int32" getmode="CopId" pickkey="id"&gt;<br />
                    <div class="space4">10.</div>&lt;decript&gt;公司id&lt;/decript&gt;<br />
                    <div class="space4">11.</div>&lt;default&gt;&lt;/default&gt;<br />
                    <div class="space3">12.</div>&lt;/add&gt;<br />
                    <div class="space3">13.</div>&lt;add type="System.Int32" getmode="QueryString" pickkey="page"&gt;<br />
                    <div class="space4">14.</div>&lt;decript&gt;当前第几页&lt;/decript&gt;<br />
                    <div class="space4">15.</div>&lt;default&gt;&lt;/default&gt;<br />
                    <div class="space3">16.</div>&lt;/add&gt;<br />
                    <div class="space3">17.</div>&lt;add type="System.Int32" getmode="QueryString" pickkey="take"&gt;<br />
                    <div class="space4">18.</div>&lt;decript&gt;每页携带多少条记录&lt;/decript&gt;<br />
                    <div class="space4">19.</div>&lt;default&gt;10&lt;/default&gt;<br />
                    <div class="space3">20.</div>&lt;/add&gt;<br />
                <div class="space2">21.</div>&lt;/parameters&gt;<br />
                <div class="space1">22.</div>&lt;/noticelist&gt;<br />
                <div class="space1">23.</div>&lt;aboutus&gt;<br />
                <div class="space2">24.</div>&lt;methodInfo&gt;<br />
                    <div class="space3">25.</div>&lt;assembly&gt;Empires.PL.ServiceClient.AboutUsServiceClient&lt;/assembly&gt;<br />
                    <div class="space3">26.</div>&lt;method&gt;GetAboutUs&lt;/method&gt;<br />
                    <div class="space3">27.</div>&lt;descript&gt;返回'关于我们'信息&lt;/descript&gt;<br />
                <div class="space2">28.</div>&lt;/methodInfo&gt;<br />
                <div class="space2">29.</div>&lt;parameters&gt;<br />
                    <div class="space3">30.</div>&lt;add type="System.Int32" getmode="CopId" pickkey="id"&gt;<br />
                    <div class="space4">31.</div>&lt;decript&gt;&lt;/decript&gt;<br />
                    <div class="space4">32.</div>&lt;default&gt;&lt;/default&gt;<br />
                    <div class="space3">33.</div>&lt;/add&gt;<br />
                <div class="space2">34.</div>&lt;/parameters&gt;<br />
                <div class="space1">35.</div>&lt;/aboutus&gt;<br />
            <div class="space0">36.</div>&lt;/assemblybinding&gt;<br />
            </div>
        </div>
        <div>
            <p style="text-indent:30px;">如样例配置文件，一个empires的name属性值为一个节点，所有节点的配置assembly必须来至于Empires.PL.ServiceClient程序集，parameters中配置的参数必须与程序中定义的参数列表顺序一致。
            如果该参数是动态变化的则设定getmode属性（详见<a href="#getmode">getmode定义</a>），如果该参数有默认值则设定default值，如果既未设定默认值，也为设定getmode，或通过getmode获取值失败将抛出异常。</p>
            <div id="#getmode">
             <h1 class="title3">GetMode定义</h1>
                <ul>
                    <li>CopId模式：通常如果设定为CopId模式则表示该值为公司id，如果被配置为CopId模式则系统将通过特定的方式自动获取该值。</li>
                    <li>QueryString模式：通过页面传值的形式获取该值(text.aspx?{PickKey}=..),</li>
                    <li>Session模式：通过Session获取该值Session["{PickKey}"]</li>
                    <li>Application模式：通过Application获取该值</li>
                </ul>
            </div>
        </div>
    </div>
    <div id="filed">
        <h1 class="title2">字段填充策略</h1>
        <ul>
            <li>注：三个模式匹配的出现必须按照索引>截取>默认值的顺序出现，如：不添加索引模式，索引模式可不出现，但不能截取模式出现在索引模式前</li>
            <li>{:TITLE}默认索引模式：当前重复第几次则读取第几条记录。第一次读取第0条。</li>
            <li>{:TITLE/d:xxxxx}默认索引模式,带默认值：当前重复第几次则读取第几条记录。第一次读取第0条。如果又数据字段中获得的数据为空，则填充默认字段</li>
            <li>{:TITLE/i:0}简单索引模式：读取该数据集中第0条记录，如果该值大于数据集中数据条数，则默认索引模式进行解析</li>
            <li>{:TITLE/i:0/s:0,10}简单索引截取模式：读取该数据集中第0条记录，并截取该条记录的指定字段<font style="color:Red;">0到10</font>个字符(javascript：str.substring(0,10))</li>
        </ul>
    </div>
    <div id="attrContract">
        <h1 class="title2">约定属性</h1>
        <ul>
            <li style="width:400px;">1. int ID <div style="float:right;width:150px; text-align:left;">Id值</div></li>
            <li style="width:400px;">2. string TITLE  <div style="float:right;width:150px; text-align:left;">标题</div></li>
            <li style="width:400px;">3. string DATE  <div style="float:right;width:150px; text-align:left;">相关日期</div></li>
            <li style="width:400px;">4. int HIT  <div style="float:right;width:150px; text-align:left;">点击量</div></li>
            <li style="width:400px;">5. string RATE  <div style="float:right;width:150px; text-align:left;">评价</div></li>
            <li style="width:400px;">6. string FROM  <div style="float:right;width:150px; text-align:left;">来源</div></li>
            <li style="width:400px;">7. string ABSTRACT  <div style="float:right;width:150px; text-align:left;">摘要</div></li>
            <li style="width:400px;">8. string AUTHOR  <div style="float:right;width:150px; text-align:left;">相关作者（编辑）</div></li>
            <li style="width:400px;">9. string CONTENT  <div style="float:right;width:150px; text-align:left;">文本</div></li>
            <li style="width:400px;">10. string URL  <div style="float:right;width:150px; text-align:left;">相关图片链接</div></li>
        </ul>
    </div>
    <div id="modeContract">
        <h1 class="title2">mode约定</h1>
         <ul>
            <li style="width:750px;">repeat模式：<div style="float:right;width:500px; text-align:left;">重复fill标签中内容，重复次数根据item配置和数据条数而定（取小）</div></li>
            <li style="width:750px;">text模式：<div style="float:right;width:500px; text-align:left;">填充fill标签中相关字段。不做其他操作。</div></li>

        </ul>
    </div>
</body>
</html>
